#pragma once 

#include <string>
#include <memory> /// support for smart pointer 
namespace Framework
{
    class Product
    {
    public:
        virtual void use (std::string& s) = 0;
        virtual std::unique_ptr<Product> clone() const = 0;
    };
};